package main

import (
	"golang-microgrpc-sharemod/consoles/tools"
	"log"
)

/*
 +----------------------------------------------------------------------
 + Title        : priorityConsumer
 + Author       : huwl
 + Version      : 2.0.0
 + Initial-Time : 2020-11-23
 + Last-time    : 这个文件最后修改的时间 + 修改人的名称
 + Desc         : 优先级消费者
 +----------------------------------------------------------------------
*/

// 编译程序命令: go build -o priorityConsumer.exe .\rabbitConsumer\priorityConsumer\main.go
// 运行程序命令: priorityConsumer.exe

/**
 * 优先级消费者
 *	- 消息具有优先级即优先消费的等级。
 *	- 必须将消息全部发送到队列中才开启消费者去消费，消息需要根据优先级在队列排完序才能让消费者进行消费。
 *	- 优先级的范围0-255,一般使用0-10。"x-max-priority": 10
 *	- 需要设置队列和消息的优先级。
 *
 * @param string queueName ----------------------------------必传,队列名称
 * @param string consumerName -------------------------------必传,消费者名称
 * @author huwl
 */
func PriorityConsumer(queueName, consumerName string) {
	log.Println("------------- priority " + consumerName + " start -------------")

	// 创建RabbitMQ
	rm, err := tools.NewRabbitMQ()
	if err != nil {
		log.Fatalf("Failed to create RabbitMQ: %v", err)
	}

	// 消费消息
	rm.ConsumeMessage(tools.ConsumerMessageParam{
		Queue:   queueName, // 队列名称
		AutoAck: true,      // true: 自动回复,false: 手动回复
	})
}
func main() {
	PriorityConsumer("priority.queue", "PriorityConsumer")
}
